perm filename IMPTLK[SS,SYS] blob sn#345686 filedate 1983-05-20 generic text, type T, neo UTF8
TITLE ITEST

IMP←←400
; Cono Bits . . .

test←←100000		; Enter test mode (does anal-cranial inversion)
strin←←040000		; Start input, sets stop, clears input end
i32←←020000		; Set input byte size to 32b if IDPIEN set
o32←←010000		; Set output byte size to 32b if ODPIEN set
clrst←←004000		; Clear stop after input bit
clrwt←←002000		; Clear waiting to input bit
strout←←000200		; Start output
fino←←000100		; Finish output (last bit has been sent)
iepien←←000040		; Enable change of input end interrupt channel
idpien←←000020		; Enable change of input byte size and input done interrupt channel
odpien←←000010		; Enable change of output byte size and output done interrupt channel


; Coni bits . . .

test←←100000		; Enter test mode (does anal-cranial inversion)
imperr←←040000		; Imp error
idone←←020000		; Input done
iend←←010000		; Input end.
odone←←004000		; Output done
pln←←20
p←←17
array pdl[pln]
integer savep,cnt,savcni

START:	calli
	movei 1,spwst
	movem 1,spwdsp
; put in initialize code here
	setzm data
	move 1,[xwd 400004,spw]
	call 1,[sixbit /SPCWGO/]
	jrst main

spw:	jrst @spwdsp
spwdsp:	0

zwait:	movei 1,zdsp
	jrst dsmg

zdsp:	move p,savep
	move 1,@(p)
	skipe (1)
	jrst dsm
	jrst cpopj1

nzwait:	movei 1,ndsp
	jrst dsmg

ndsp:	move p,savep
	move 1,@(p)
	skipn (1)
	jrst dsm
	jrst cpopj1

fwait:	movei 1,fdsp
	jrst dsmg

fdsp:	move p,savep
	move 1,@(p)
	conso imp,(1)
	jrst dsm
	jrst cpopj1


bwait:	movei 1,100
	movem 1,cnt
	movei 1,bdsp
dsmg:	movem 1,spwdsp
	movem p,savep
	jrst dsm

bdsp:	move p,savep
	move 1,@(p)
	conso imp,(1)
	jrst count
	aos (p)
cpopj1:	aos (p)
	popj p,

count:	sosle cnt
dsm:	call [sixbit /DISMIS/]
	coni imp,savcni
	aos (p)
	move 1,@(p)
	sos (1)
spwst:	move p,[iowd pln,pdl]
	movei 1,3
	movem 1,nopcnt#
noplop:	cono imp,strout!o32!odpien
	datao imp,[4B7]
	pushj p,fwait
	odone

	cono imp,fino
	pushj p,fwait
	odone

	sosle nopcnt
	jrst noplop

	pushj p,nzwait
	data

	cono imp,strout!o32!odpien
	datao imp,[13B15]
	pushj p,fwait
	odone

oloop:	blko imp,blkop
	jrst done
	pushj p,fwait
	odone
	jrst oloop

done:	pushj p,fwait
	odone

	cono imp,fino
	pushj p,fwait
	odone

	setzm data
	jrst spwst
integer blkop
array messag[300]

main:	move 1,[point 8,messag]
	setz 2,
	outstr [asciz /Message:	/]
mloop:	inchwl 3
	ori 3,200
	idpb 3,1
	addi 2,1
	caie 3,212
	jrst mloop
	trne 2,3
	addi 2,4
	lsh 2,-2
	movns 2
	hrli 2,messag-1
	movsm 2,blkop
	setom data#
sloop:	movei 1,1
	call 1,[sixbit /SLEEP/]
	skipe data
	jrst sloop
	jrst main

end start